package com.otitan.la.forest.system.util;

import com.otitan.la.forest.system.entity.FileInfoEntity;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * @Description:    ZipUtils
 * @Author:        Sunke
 * @CreateDate:     2020/10/15 0015 13:55
 * @UpdateUser:     Sunke
 * @UpdateDate:     2020/10/15 0015 13:55
 * @UpdateRemark:   修改内容
 * @Version:        1.0
 */
public class ZipUtils {
    private static final String ZIP_FILE_NAME = "项目附件";
    private static final String ZIP_FILE_SUFFIX = ".zip";

//    /**
//     * 批量打包
//     *
//     * @param
//     * @return java.lang.String
//     * @throws
//     * @author jiachangsen
//     * @date 2020/07/21 15:51
//     */
//    public static void createZipAndReturnPath(
//            HttpServletResponse response,
//            List<FileInfoEntity> fileInfos,
//            FastFileStorageClient fastFileStorageClient) {
//        ZipOutputStream out = null;
//
//        try {
//            // 设置响应消息头
//
//            String timestamp = DateTimeUtil.parseDate(new Date(), "yyyyMMddHHmmss");
//            String fileName = ZIP_FILE_NAME + timestamp + ZIP_FILE_SUFFIX;
//            FileUtil.setResponseContentDisposition(response, fileName);
//            response.setCharacterEncoding("UTF-8");
//            response.setContentType("application/zip;charset=utf-8");
//
//
//            out = new ZipOutputStream(response.getOutputStream());
//            out.setMethod(ZipOutputStream.DEFLATED);
//
//            for (FileInfoEntity fileInfo : fileInfos) {
//                String[] split = fileInfo.getFilePath().split("/", 2);
//                byte[] bytes = fastFileStorageClient.downloadFile(split[0], split[1], new DownloadByteArray());
//
//                InputStream fis = new ByteArrayInputStream(bytes);
//
//                // 每个文件命名
//                out.putNextEntry(new ZipEntry(fileInfo.getDirPath().substring(1) + fileInfo.getFileName()));
//                // 写入压缩包
//                int len;
//                byte[] buffer = new byte[1024];
//                while ((len = fis.read(buffer)) > 0) {
//                    out.write(buffer, 0, len);
//                }
//                out.closeEntry();
//                fis.close();
//            }
//            out.close();
//            out.flush();
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            try {
//                if (out != null) {
//                    out.close();
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//    }

}
